Network coding is a technique which is normally used to improve a network's throughput, efficiency and scalability by simultaneously transmitting the same information to multiple receivers in the network, i.e. in a wireless broadcast system or multicast system.
In a wireless broadcast and multicast systems, the transmitter or sender which may be a Radio Base Station (RBS), also referred to as “eNodeB” or BTS (Base Transceiver Station) broadcasts data to multiple receivers, which may be User Equipments (UEs) also referred to as mobile stations, mobile terminals, wireless terminals, mobile telephones, cellular telephones or smartphones, laptops, notebooks, tablets, handheld devices via a broadcast channel simultaneously. Sometimes, not all the packets arrive at their destination and some of them are lost during the transmission phase. For each packet received, each receiver sends an acknowledgement (ACK) message confirming the reception and sends a non-acknowledgement (NACK) message for each lost packet. In order to replace the lost packets, the transmitter may have the choice to either retransmit all the packets that were lost during the transmission (Automatic Repeat reQuest, ARQ, retransmission) or to retransmit only a pre-defined number of packets using network coding.
In network coding, the transmitter encodes several packets together. This may be used for attaining the maximum possible information flow in a network.
As shown in FIG. 1, a transmitter is broadcasting P1 and P2 to User Equipment 1 (UE1) and User Equipment 2 (UE2). Moreover, P1 is lost by UE1 and P2 is lost by UE2. In FIG. 1a, the ARQ-retransmission is shown here, which involves resending the packets P1 and P2 to the receivers.
In FIG. 1b, it is shown a retransmission using network coding. Here, the packets P1 and P2 are combined using a logical operation called ‘exclusive or’ or also referred as XOR, denoted as ⊕. The UEs recover the lost packets performing the following XOR operations:
UE1 recovers P2: P1⊕.(P1⊕.P2)
UE2 recovers P1: P2⊕.(P1⊕.P2)
As seen in this example, the retransmission in 1b required retransmitting only one packet instead of two packets separately as performed by ARQ-retransmission in 1a. 
In general, there are a few existing technologies used to retransmit packets in a broadcast or multicast system. As mentioned above, ARQ-retransmission is one of them, where all blocks are retransmitted if any of the receivers loses a packet. Then, we have the network coding schemes which may be either randomly or binary. The Random Linear Network Coding (RLNC) retransmits the lost packets by encoding all packets with a randomly selected coefficient. If k packets are lost during the transmission phase, the receiver recovers the lost packets by k retransmissions. The decoding procedure involves resolving a k-linear equation. The Binary network coding schemes involve encoding several of the lost packets in binary form using the XOR-operation. The advantage of using the XOR-operation is that there is no need to use any other operation for decoding the retransmitted packets, and the calculations are much simpler than for the RLNC.
Among the binary network coding schemes, there are a few to be mentioned here:                NCWBR (Network Coding in Wireless Broadcast Retransmission) is a method of encoding every receiver's first lost packet in the retransmission phase.        VCHA (Vertex Colouring-based Heuristic Algorithm) is a binary network coding scheme that uses vertex colouring method.        Bucket uses the known bucket theory.        
WBRBNC (Wireless Broadcast Retransmission approach based on Binary Network Coding) is a binary network coding scheme which uses a greedy method in the encoded packet selection.
Despite the number of retransmission methods used, there are still problems that are not solved by these coding schemes. For instance, the traditional retransmission scheme ARQ is not efficient due to a large amount of retransmission data is resent when a large number of packets are lost for many receivers. In contrary, the RLNC achieves a high level of efficiency when retransmitting. However, RLNC decodes packets in a complex way. The average decoding complexity per retransmission packet is O(n2). In general, when the number of retransmissions is large due to its complexity, it is then not feasible to decode the packets in a reasonable time to fit the real time requirement. Furthermore, it becomes less feasible to be implemented in lower network layer protocols compared to binary schemes.